<template>
  <div class="app-container">
    <el-card shadow="always" :body-style="{ padding: '20px' }">
      <div slot="header">
        <span>员工批量导入</span>
      </div>
      <!-- card body -->
      <UploadExcel :before-upload="beforeUpload" :on-success="onSuccess" />
    </el-card>

  </div>
</template>

<script>
import { importEmployees } from '@/api/employees.js'
import { formatExcelDate } from '@/utils/index'
export default {
  methods: {
    beforeUpload(file) {
      console.log(file)
      // 一定要返回true 不然无法执行onSuccess()
      return true
    },
    async onSuccess(res) {
      console.log(res)
      // 校验通过=>获取excel里面的数据
      await importEmployees(this.transfromKeys(res.results))
      this.$message.success('批量导入成功')
      this.$router.back()
      // 调用接口上传excel读到的所有员工的数据
    },
    // 因为组件读到的excel里的键是中文,而后台需要的是英文,所以需要转换一下
    //  思路
    // 1.中英对照表
    transfromKeys(results) {
      // results是传入的excel文件的results属性
      const userRelations = {
        '入职日期': 'timeOfEntry',
        '聘用形式': 'formOfEmployment',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber',
        '部门': 'departmentName'
      }
      // 创建一个数组来保存转换成英文key的数据
      const newArr = []
      // res是传入的中文key的数据
      results.forEach(item => {
        // item是中文key的数据
        //  创建一个空对象来保存转换好的数据
        const userInfo = {}
        for (const zhkey in item) {
          const enKey = userRelations[zhkey]
          if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
            // 对时间进行转换
            userInfo[enKey] = formatExcelDate(item[zhkey], '-')
          } else {
          // userRelations[zhkey]获取英文key
            userInfo[enKey] = item[zhkey]
          }
        }
        // 把转换完的对象添加到数组中
        newArr.push(userInfo)
      })
      return newArr
    }
  }
}
</script>

<style lang="scss" scoped>

</style>
